package com.example.jpa.slave;

import com.example.jpa.pojo.Person;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 86188
 */
@Repository("slavePersonRepository")
public interface PersonRepository extends JpaRepository<Person, String>, JpaSpecificationExecutor<Person> {

    /**
     * 根据名字找人
     * @param name
     * @return
     */
    List<Person> findByName(String name);

    /**
     * 根据地址找人
     * @param address
     * @return
     */
    List<Person> findByAddress(String address);

    /**
     * 根据名字和地址找人
     * @param name
     * @param address
     * @return
     */
    Person findByNameAndAddress(String name, String address);

    /**
     * 根据名字和地址找人
     * @param name
     * @param address
     * @return
     */
    @Query("select p from Person p where p.name=:name and p.address=:address")
    Person withNameAndAddressQuery(@Param("name") String name, @Param("address") String address);

}
